/*
 * $Id: Programme.java 3 2011-12-26 07:48:43Z forwardly@hotmail.com $
 * 
 * Copyright (c) 2001-2008 Accentrix Company Limited. All Rights Reserved.
 * 
 * Accentrix Company Limited. ("Accentrix") retains copyright on all text, source
 * and binary code contained in this software and documentation. Accentrix grants
 * Licensee a limited license to use this software, provided that this copyright
 * notice and license appear on all copies of the software. The software source
 * code is provided for reference purposes only and may not be copied, modified 
 * or distributed.
 * 
 * THIS SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS," WITHOUT ANY WARRANTY OF
 * ANY KIND UNLESS A SEPARATE WARRANTIES IS PURCHASED FROM ACCENTRIX AND REMAINS
 * VALID.  ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
 * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 * PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. ACCENTRIX SHALL NOT BE LIABLE
 * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING OR MODIFYING THE
 * SOFTWARE OR ITS DERIVATIVES.
 * 
 * IN NO EVENT WILL ACCENTRIX BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
 * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
 * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE
 * USE OF OR INABILITY TO USE SOFTWARE, EVEN IF ACCENTRIX HAS BEEN ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 */
package com.lightsaber.trade.as.entity.programme;

import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;

@Entity
@DiscriminatorValue("Programme")
public class Programme extends BaseProgramme {

    private static final long serialVersionUID = -6339528010410571436L;

    @Column(name = "LAUNCH_YEAR", nullable = true)
    private Integer launchYear;

    @Column(name = "LAUNCH_VERSION", nullable = true, length = 100)
    private String launchVersion;

    @Column(name = "BOARD", length = 100)
    private String board;

    @Column(name = "DISCIPLINE", nullable = true, length = 100)
    private String discipline;

    @Column(name = "FUNDING_MODE", nullable = true, length = 100)
    private String fundingMode;

    @Column(name = "STUDY_MODE", nullable = true, length = 100)
    private String studyMode;

    @Column(name = "AWARD", nullable = true, length = 100)
    private String award;

    @Column(name = "GAR_TYPE", nullable = true, length = 100)
    private String garType;

    @Column(name = "STUDY_LEVEL", nullable = true, length = 100)
    private String studylevel;

    @Column(name = "PROGRAMME_TYPE", nullable = true, length = 100)
    private String programmeType;

    @Column(name = "MAIN_STREAM", nullable = true, length = 100)
    private String mainStream;

    @Column(name = "PRE_EMPLOYMENT_IN_SERVICE", nullable = true, length = 30)
    private String preEmploymentInService;

    @Column(name = "REVISION_TYPE", nullable = true, length = 100)
    private String revisionType;

    @Column(name = "MINIMUMN_ENTRY_LEVEL", nullable = true, length = 30)
    private String minimumnEntryLevel;

    @Column(name = "QF_LEVEL", nullable = true, length = 30)
    private String qfLevel;

    @Column(name = "CAAVQ_VALIDATION_PERIOD", nullable = true, length = 30)
    private String caavqValidationPeriod;

    @Column(name = "INTERNAL_VALIDATION_PERIOD", nullable = true, length = 30)
    private String internalValidationPeriod;

    @Column(name = "CARD_EXPIRY", nullable = true)
    private Integer cardExpiry;

    @Column(name = "EXTERNAL_EXAMINER", nullable = true, length = 30)
    private String externalExaminer;

    @Column(name = "CLASSIFICATION", nullable = true, length = 30)
    private String classification;

    @Column(name = "APPROVAL_DATE", nullable = true)
    private Date approvalDate;

    @Column(name = "REQUIRE_STREAM", nullable = true)
    private boolean requireStream;
    
    //add by dj only for read 
    @Column(name = "STREAM_CODE",insertable=false,updatable=false)
    private String streamCode;
    
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "programme")
    private List<Stream> streams;

    public List<Stream> getStreams() {
        return streams;
    }

    public void setStreams(final List<Stream> streams) {
        this.streams = streams;
    }

    public Integer getLaunchYear() {
        return launchYear;
    }

    public void setLaunchYear(final Integer launchYear) {
        this.launchYear = launchYear;
    }

    public String getLaunchVersion() {
        return launchVersion;
    }

    public void setLaunchVersion(final String launchVersion) {
        this.launchVersion = launchVersion;
    }

    public String getDiscipline() {
        return discipline;
    }

    public void setDiscipline(final String discipline) {
        this.discipline = discipline;
    }

    public String getFundingMode() {
        return fundingMode;
    }

    public void setFundingMode(final String fundingMode) {
        this.fundingMode = fundingMode;
    }

    public String getStudyMode() {
        return studyMode;
    }

    public void setStudyMode(final String studyMode) {
        this.studyMode = studyMode;
    }

    public String getAward() {
        return award;
    }

    public boolean isRequireStream() {
        return requireStream;
    }

    public void setRequireStream(final boolean requireStream) {
        this.requireStream = requireStream;
    }

    public void setAward(final String award) {
        this.award = award;
    }

    public String getGarType() {
        return garType;
    }

    public void setGarType(final String garType) {
        this.garType = garType;
    }

    public Date getApprovalDate() {
        return approvalDate;
    }

    public void setApprovalDate(final Date approvalDate) {
        this.approvalDate = approvalDate;
    }

    public String getStudylevel() {
        return studylevel;
    }

    public void setStudylevel(final String studylevel) {
        this.studylevel = studylevel;
    }

    public String getProgrammeType() {
        return programmeType;
    }

    public void setProgrammeType(final String programmeType) {
        this.programmeType = programmeType;
    }

    public String getMainStream() {
        return mainStream;
    }

    public void setMainStream(final String mainStream) {
        this.mainStream = mainStream;
    }

    public String getPreEmploymentInService() {
        return preEmploymentInService;
    }

    public void setPreEmploymentInService(final String preEmploymentInService) {
        this.preEmploymentInService = preEmploymentInService;
    }

    public String getRevisionType() {
        return revisionType;
    }

    public void setRevisionType(final String revisionType) {
        this.revisionType = revisionType;
    }


    public String getBoard() {
        return board;
    }

    public void setBoard(final String board) {
        this.board = board;
    }

    public String getMinimumnEntryLevel() {
        return minimumnEntryLevel;
    }

    public void setMinimumnEntryLevel(final String minimumnEntryLevel) {
        this.minimumnEntryLevel = minimumnEntryLevel;
    }

    public String getQfLevel() {
        return qfLevel;
    }

    public void setQfLevel(final String qfLevel) {
        this.qfLevel = qfLevel;
    }

    public String getCaavqValidationPeriod() {
        return caavqValidationPeriod;
    }

    public void setCaavqValidationPeriod(final String caavqValidationPeriod) {
        this.caavqValidationPeriod = caavqValidationPeriod;
    }

    public String getInternalValidationPeriod() {
        return internalValidationPeriod;
    }

    public void setInternalValidationPeriod(final String internalValidationPeriod) {
        this.internalValidationPeriod = internalValidationPeriod;
    }

    public Integer getCardExpiry() {
        return cardExpiry;
    }

    public void setCardExpiry(final Integer cardExpiry) {
        this.cardExpiry = cardExpiry;
    }

    public String getExternalExaminer() {
        return externalExaminer;
    }

    public void setExternalExaminer(final String externalExaminer) {
        this.externalExaminer = externalExaminer;
    }

    public String getClassification() {
        return classification;
    }

    public void setClassification(final String classification) {
        this.classification = classification;
    }

    public String getStreamCode() {
        return streamCode;
    }

    public void setStreamCode(String streamCode) {
        this.streamCode = streamCode;
    }
}
